import dayjs from 'dayjs';
import dotenv from 'dotenv';
import { EnvValidator } from './env.js';
// 注意导入其它模块时，需要加上文件后缀名，否则node会报错
import { myAdd } from './mymath.js';

// 根据NODE_ENV加载对应的环境配置文件
const nodeEnv = process.env.NODE_ENV || 'development';
console.log(`🌍 当前运行环境: ${nodeEnv}`);

// 加载环境配置文件
if (nodeEnv === 'production') {
  dotenv.config({ path: '.env.production' });
  console.log('📦 已加载生产环境配置文件');
} else if (nodeEnv === 'development') {
  dotenv.config({ path: '.env.development' });
  console.log('🔧 已加载开发环境配置文件');
} else {
  dotenv.config(); // 加载默认的 .env 文件
  console.log('⚙️  已加载默认配置文件');
}

// 获取并验证环境变量
const config = EnvValidator.getConfig();

// 显示环境配置信息
console.log('\n' + '='.repeat(60));
console.log('🚀 应用程序配置信息');
console.log('='.repeat(60));

console.log(`📱 应用名称: ${config.APP_NAME}`);
console.log(`🔢 版本号: ${config.APP_VERSION}`);
console.log(`🌐 运行环境: ${config.NODE_ENV}`);
console.log(`🔌 端口: ${config.APP_PORT}`);
console.log(`🏠 主机: ${config.APP_HOST}`);

console.log('\n📊 数据库配置:');
console.log(`  - 主机: ${config.DB_HOST}:${config.DB_PORT}`);
console.log(`  - 数据库: ${config.DB_NAME}`);
console.log(`  - 用户: ${config.DB_USER}`);
console.log(`  - 密码: ${'*'.repeat(config.DB_PASSWORD.length)}`);

console.log('\n🔗 API 配置:');
console.log(`  - 基础URL: ${config.API_BASE_URL}`);
console.log(`  - 超时时间: ${config.API_TIMEOUT}ms`);
console.log(`  - 重试次数: ${config.API_RETRY_COUNT}`);

console.log('\n🐛 调试设置:');
console.log(`  - 调试模式: ${config.DEBUG ? '启用' : '禁用'}`);
console.log(`  - 日志级别: ${config.LOG_LEVEL}`);
console.log(`  - 热重载: ${config.ENABLE_HOT_RELOAD ? '启用' : '禁用'}`);
console.log(`  - 源码映射: ${config.ENABLE_SOURCE_MAPS ? '启用' : '禁用'}`);

console.log('\n🔒 安全配置:');
console.log(`  - JWT密钥: ${'*'.repeat(8)}`);
console.log(`  - CORS来源: ${config.CORS_ORIGIN}`);

console.log('\n🚀 功能开关:');
console.log(`  - 新UI: ${config.FEATURE_NEW_UI ? '✅ 启用' : '❌ 禁用'}`);
console.log(
  `  - 分析功能: ${config.FEATURE_ANALYTICS ? '✅ 启用' : '❌ 禁用'}`
);
console.log(
  `  - 测试功能: ${config.FEATURE_BETA_TESTING ? '✅ 启用' : '❌ 禁用'}`
);

console.log('\n🔌 第三方服务:');
console.log(`  - Redis: ${config.REDIS_URL}`);
console.log(`  - Elasticsearch: ${config.ELASTICSEARCH_URL}`);

// 根据环境显示不同的提示信息
if (config.NODE_ENV === 'production') {
  console.log('\n🚨 注意: 当前运行在生产环境模式');
  console.log('   - 调试功能已禁用');
  console.log('   - 日志级别设置为错误级别');
  console.log('   - 性能优化已启用');
} else if (config.NODE_ENV === 'development') {
  console.log('\n🔧 提示: 当前运行在开发环境模式');
  console.log('   - 调试功能已启用');
  console.log('   - 详细日志记录');
  console.log('   - 热重载功能可用');
}

console.log('\n' + '='.repeat(60));

// 测试一下导入的函数
const result = myAdd(5, 3);
console.log(`The result of myAdd(5, 3) is: ${result}`);

// 使用 dayjs 获取当前时间的开始和结束
const time1 = dayjs().startOf('day');
const time2 = dayjs().endOf('day');

console.log(`Start of the day: ${time1.format('YYYY-MM-DD HH:mm:ss')}`);
console.log(`End of the day: ${time2.format('YYYY-MM-DD HH:mm:ss')}`);

// 测试.env文件中的变量
